import theAxios from 'axios'
import { Toast } from 'vant'
import router from '@/router/index.js'

import { getToken, removeToken } from './locaToken'
const axios = theAxios.create({
  baseURL: '',
  timeout: 30000
})

// 添加请求拦截器
axios.interceptors.request.use(
  (config) => {
    // 在发送请求之前做些什么
    // 设置 token 到 Authorization 头部
    const token = getToken()
    // console.log(token)
    if (token) {
      config.headers.Authorization = `Bearer ${token}`
    }
    return config
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
axios.interceptors.response.use(
  (response) => {
    return response
  },
  (error) => {
    // 对响应错误做点什么
    // console.dir(error)
    // console.log(error.response.status)
    if (error.response && error.response.status === 401) {
      // token 过期 => 清除 token  => 提示用户信息 =>跳转页面
      // 清除token
      removeToken()
      // vuex 持久化 也要清除
      localStorage.removeItem('vuex')
      Toast({
        duration: 2500, // 持续展示 toast
        forbidClick: true,
        message: '身份已过期 请重新登陆'
      })

      // 跳转页面
      router.replace('/login')
    }
    return Promise.reject(error)
  }
)

export default ({ url, method = {}, params = {}, data = {}, headers = {} }) => {
  return axios({
    url,
    method,
    params,
    data,
    headers
  })
}
